package com.gao.typehandler;

import org.apache.ibatis.type.*;

import java.sql.*;

/**
 * 自定义类型处理器
 * <p>
 * 要注意 MyBatis 不会通过检测数据库元信息来决定使用哪种类型，
 * 所以你必须在参数和结果映射中指明字段是 VARCHAR 类型，
 * 以使其能够绑定到正确的类型处理器上。
 * 这是因为 MyBatis 直到语句被执行时才清楚数据类型。
 *
 * @author gaoxi
 * @date 2022-3-3 21:44:44
 */
// 指定要处理JDBC类型
@MappedJdbcTypes({JdbcType.VARCHAR})
public class ExampleTypeHandler extends BaseTypeHandler<String> {


    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i, parameter);
    }

    @Override
    public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return rs.getString(columnName) + "yyds";
    }

    @Override
    public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return rs.getString(columnIndex) + "yyds";
    }

    @Override
    public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return cs.getString(columnIndex) + "yyds";
    }
}